home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / aminet / util / gnu / gnu_tile_forth.lha / tst / macros.tst < prev    next >
Text File  |  1992-05-19  |  697b  |  44 lines

  1. .( Loading Macros test...) cr
  2.  
  3. #include macros.f83
  4.  
  5. macros
  6.  
  7. .( 1: Define "nip" and mark it as a macro definition) cr
  8.  
  9. : nip ( a b -- b) swap drop ; macro
  10.  
  11. .macro nip cr
  12. 1 2 nip . cr
  13.  
  14. : x ( a b -- b)  nip ;
  15.  
  16. 1 2 x . cr
  17.  
  18.  
  19. .( 2: Define "mip" as a double "nip" macro) cr
  20.  
  21. : mip ( a b c -- c) nip nip ; macro
  22.  
  23. .macro mip cr
  24. 1 2 3 mip . cr
  25.  
  26.  
  27. .( 3: Conditional code may also be used as a macro) cr
  28.  
  29. : ?magic-number ( x -- int) 0> if 42 else -42 then ; macro
  30.  
  31. .macro ?magic-number cr
  32. 1 ?magic-number . cr
  33. 0 ?magic-number . cr
  34.  
  35.  
  36. .( 4: Macros in macros work the way they should) cr
  37.  
  38. : add-magic-number ( x -- int) dup ?magic-number + ; macro
  39.  
  40. .macro add-magic-number cr
  41. 10 add-magic-number . cr
  42.  
  43. forth only
  44.